function setItem (name,item){
    localStorage.setItem(name,JSON.stringify(item))
}
function getItem (name){
    return JSON.parse(localStorage.getItem(name) || '[]')
}
const state = {
    car:getItem('car'),
    buy:getItem('buy')
  }
const getters = {
    getGoodsCount(state){
        var goods = {}
        state.car.forEach(item => {
          goods[item.id] = item.count
        })
        return goods
    },
    getGoodsSelected(state){
        var goods = {}
        state.car.forEach(item => {
          goods[item.id] = item.selected
        })
        return goods
    },
    getSelectedCount(state){
        var count = 0
        state.car.forEach(item => {
          if(item.selected){
            count += item.count
          }
        })
        return count
    },
    getSelectedGoods(state){
        var goods = {}
        state.car.forEach(item => {
            if(item.selected){
                goods[item.id] = item
            }
        })
        return goods
    },
    getBuy(state){
        var goods = {}
        state.car.forEach(item => {
          if(item.selected){
            goods[item.id] = item
          }
        })
        return goods
    }
  }
const actions = {}
const mutations = {
    addCar (state,goodsinfo){
        var flag =  false
        state.car.some(item => {
            if(item.id == goodsinfo.id){
                item.count += parseInt(goodsinfo.count)
                flag = true
                return true
            }
        })
        if(!flag){ 
            state.car.push(goodsinfo)
        }
        setItem('car',state.car)
    },
    updateGoodsInfo (state, goodsinfo) {
      state.car.some(item => {
        if (item.id == goodsinfo.id) {
          item.count = parseInt(goodsinfo.count)
          return true
        }
      })
      setItem('car', state.car)
    },
    updateGoodsSelected(state,info){
      state.car.some(item =>{
        if(item.id == info.id){
          item.selected = info.selected
        }
      })
      setItem('car',state.car)
    },
    removeCar (state, id) {
      state.car.some((item, i) => {
        if (item.id == id) {
          state.car.splice(i, 1)
          return true
        }
      })
      setItem('car', state.car)
    },
    setBuy (state,goods) {
        state.buy = []
        if(goods){
          state.buy.push(goods)
        } else {
          state.car.some(item => {
          if (item.selected) {
            state.buy.push(item)
          }
        })
        }
        setItem('buy', state.buy)
      }    
  }
  export default {
    namespaced: true,
    state,
    getters,
    actions,
    mutations
  }
  